// pages/order/index.js
/*
1、页面被打开的时候，onShow
    0、onshow不同于onload无法在形参上接收options
        判断缓存中有没有token
        1、没有 直接跳转到授权页面
        2、有，直接往下进行
    1、获取url上的参数type
        根据type来决定页面标题的数组元素那个被选中
    2、根据type去发送请求获取订单数据
    3、渲染页面
2、当点击不同标题的时候 重新发送请求来获取和渲染数据
*/
//引入用来发送请求的方法   一定要把路径补全
import{ request } from "../../request/index.js";
import regeneratorRuntime from '../../lib/runtime/runtime';    
Page({

    /**
     * 页面的初始数据
     */
    data: {
        orders:[],
        tabs:[
            {
                id:0,
                value:"全部",
                isActive:true
            },
            {
                id:1,
                value:"待付款",
                isActive:false
            },
            {
                id:2,
                value:"待发货",
                isActive:false
            },
            {
                id:3,
                value:"退货/退款",
                isActive:false
            }
        ],
    },
    //根据标题的索引来激活选中标题数组
    changeTitleByIndex(index){
         //2、修改源数组
        let {tabs} = this.data;
        tabs.forEach((v,i)=>i===index?v.isActive=true:v.isActive=false);
        this.setData({
            tabs
        })
    },
    //标题点击事件，从子组件传递过来
    handleTabsItemChange(e){
        console.log(e);
        //1、获取被点击的标题索引
        const {index} = e.detail;
        this.changeTitleByIndex(index);
        //重新发送请求
        this.getOrders(index+1);
    },
    /**
     * 生命周期函数--监听页面显示
     */
    onShow(options) {
        const token = wx.getStorageSync("token");
        if(!token){
            wx.navigateTo({
              url: '/pages/auth/index',
            });
            return;
        }
        //1、获取当前的小程序的页面栈-数组，长度最大是10个页面
        let pages = getCurrentPages();
        console.log(pages);
        //2、数组中 索引最大的页面就是当前页面
        let currentPages=pages[pages.length-1];
        console.log(currentPages.options);
        //3、获取url上的type值
        const {type}=currentPages.options;
        //4、激活选中的页面标题，当type=1，index=0
        this.changeTitleByIndex(type-1);
        this.getOrders(type);
    },
    //获取订单列表的方法
    async getOrders(type){
        const res=await request({url:"/my/orders/all",data:{type}});
        console.log(res);
        this.setData({
            orders:res.orders.map(v=>({...v,create_time_cn:(new Date(v.create_time*1000).toLocaleString())})),
        })
    }
})